1. Field
The invention relates to digital communications and, more particularly, to channel and source decoding.
2. Background
The demands of higher data rates and higher quality of service in mobile communication systems is growing rapidly. However, factors such as limited transmit power, limited bandwidth and multi-path fading continue to restrict the data rates handled by practical systems. In multimedia communications, particularly in error-prone environments, error resilience of the transmitted media is critical in providing the desired quality of service because errors in even a single decoded value can lead to decoding artifacts propagating spatially and temporally. Various encoding measures have been used to minimize errors while maintaining a necessary data rate, however all of these techniques suffer from problems with errors arriving at the decoder side.
Through the use of a source encoder, data is compressed—conveying the maximum information by expending the minimum number of bits, followed by a channel encoder that tends to maximize the capacity of the transmission channel for a given probability of error in receiving these bits.
Channel coding, for example, Reed-Solomon coding, is used to improve the robustness of the source coded data. Joint source-channel coding methodologies have been used to provide unequal error protection to source coded data with unequal importance or to enable rate adaptation of coded video data to available network bandwidth through partitioning and dropping packets. This is because the common transport protocols do not deliver corrupted data to the source decoder.
Source coding techniques such as reversible variable length coding (e.g. in MPEG-4) have been used for error recovery by decoding the packet in the reverse order when corrupt packets are in fact received. There is a compromise in coding efficiency with source coding techniques, which translates to quality of decoded video for a given bit rate.
Entropy coding enables very efficient lossless representations of symbols generated by random information sources. As such it is an indispensable component of both lossless and lossy data compression schemes. Despite its tremendous benefits to compression efficiency, entropy coding also complicates the decoding process. A common feature of all different approaches to entropy coding is that a single or a sequence of source symbols (dictionary coding) is associated and represented with a binary pattern i.e. a sequence of ones and zeros known as a codeword, the length of which increases with decreasing symbol likelihood. Hence more likely symbols are assigned more compact representations, enabling on average a substantial savings over a straightforward symbol alphabet size based fixed-length representation.
The ambiguity around how many bits to consume for the next symbol in a bitstream, i.e. in an entropy coded representation of the output of an information source, is an obvious complication for a decoder. However, much more importantly, in case of errors in the bitstream, the use of variable size codewords in conjunction with flipped bits (due to errors) will frequently result in the emulation of an incorrect codeword length and as a result the parsing/decoding process will loose its synchronization with the bitstream, i.e., correct identification of codeword boundaries and hence correct interpretation of the bitstream will start failing.
Assume a decoder implementing a basic level of error detection measures encounters a problem in decoding a bitstream and loses syncronization. Eventually, due to either a syntax violation, i.e., an invalid codeword, or a semantic failure e.g. invalid parameter values or unexpected bitstream object, the decoder will become aware of the problem and take necessary steps to resynchronize itself with the bitstream. This will typically induce data loss to an extent much beyond the corruption that triggered the data loss in the first place. One reason for this is the fact that points in the bitstream that enable resynchronization, with slice boundaries being the most common example, cannot be frequently utilized due to the overhead of providing them. A more important reason is their toll on compression efficiency stemming from the requirement that, across these points, all forms of encoding/decoding dependencies are to be avoided, e.g. predictive coding chains to be terminated and restarted after a default initialization.
Another reason that will cause data loss in excess of the initial corruption is due to incorrect codeword emulation. The identification of the initial bit error position is not a trivial task and typically is not possible without a special design below the application layer i.e. a channel decoder supporting this. Hence, upon detecting bitstream corruption, the source decoder will have to stop decoding and move forward in the bitstream to find the next resynchronization point, and in the process necessarily skipping a sizeable amount of potentially healthy data. Although emulation of a different codeword, which is the same length as the original, i.e. authentic, codeword might seem to be less of a problem with respect to the sequence of events described above, this is actually not the case. There are many ways in which this kind of an error may lead to failures in a decoder's correct bitstream interpretation. For example, in most current codecs there are objects in the bitstream (compression related parameters) whose values influence the syntax of the following portion of the bitstream. Hence, an incorrect value for such an object will lead to an incorrect bitstream interpretation.
After the introduction of the video compression standard H.264, there is yet another reason which makes emulation of incorrect-but-same-length codewords as bad as synchronization loss. The so called context adaptivity (or context dependency) of entropy coding rules may result in a situation where bitstream synchronization is lost not due to the emulation of a different-size codeword i.e. codeword size stays the same, but rather the incorrect value (decoded from the incorrect codeword) triggers an unauthentic context change thereby replacing entropy decoding rules in effect with an alternate and incorrect set of rules. In all cases described, even a single incorrectly decoded value will lead to decoding artifacts.
An improved method to correct the bit errors is needed to avoid the data loss associated with a source decoder's synchronization loss and the resulting resynchronization in entropy coded bitstreams. That is, the residual bit errors, i.e., bit errors that were either not detected or detected and not corrected by the forward error correction scheme employed, and their degrading impact on the decoding of entropy coded bitstreams, need to be addressed.